type TComponentProps = {
    [key: string]: any;
    dispatch: (field: any, data: any, extra?: any) => void;
    showWidgetGroup: (params: { groupFilterId: any }) => void;
};

type TWidgetAnimateCss = 'animate__fadeInLeft' | 'animate__fadeInRight' | 'animate__zoomIn';

type TWidget = {
    screen: string;
    widgetName: any;
    element: React.ComponentType | React.LazyExoticComponent<any>;
    id: string;
    groupFilterId: string;
    layout: {
        left: number;
        top: number;
        width: number;
        height: number;
        zIndex?: number;
    };
    style?: React.CSSProperties;
    control: {
        subscribe?: Record<string, any>;
    };
    animateCss: TWidgetAnimateCss;
};

export {
    //
    type TComponentProps,
    type TWidgetAnimateCss,
    type TWidget,
};
